/**
 * 将图片转换成 base64 格式
 * @param {string} url 图片的 URL 地址
 * @param {string} format 图片的格式，默认为 'image/png'
 * @return {Promise<string>} Promise 对象，resolve 一个 base64 编码的字符串，reject 图片加载失败的错误
 */
export default function convertImageToBase64(url, format = "image/png") {
	return new Promise((resolve, reject) => {
		// 创建一个 Image 元素
		const img = new Image();
		// 设置 crossOrigin 属性以解决跨域问题
		img.setAttribute("crossOrigin", "anonymous");
		// 监听图片加载完成事件
		img.onload = () => {
			// 创建一个 canvas 元素
			const canvas = document.createElement("canvas");
			// 设置 canvas 的宽和高为图片的宽和高
			canvas.width = img.width;
			canvas.height = img.height;
			// 获取 canvas 的上下文
			const ctx = canvas.getContext("2d");
			// 在 canvas 上绘制图片
			ctx.drawImage(img, 0, 0, img.width, img.height);
			// 将 canvas 转换为 base64 格式的字符串，并通过 Promise 返回
			resolve(canvas.toDataURL(format, 1));
		};
		// 监听图片加载失败事件
		img.onerror = () => reject(new Error("图片加载失败"));
		// 设置图片的 URL 地址，开始加载图片
		img.src = url;
	});
}
